use napi_derive_ohos::napi;

/// 游戏实体结构体，表示位置和速度，全部用f64替代f32
#[napi]
pub struct GameEntity {
    /// x 坐标
    pub x: f64,
    /// y 坐标
    pub y: f64,
    /// x 方向速度
    pub velocity_x: f64,
    /// y 方向速度
    pub velocity_y: f64,
}

#[napi]
impl GameEntity {
    /// 构造函数，创建一个新的游戏实体
    #[napi(constructor)]
    pub fn new(x: f64, y: f64, velocity_x: f64, velocity_y: f64) -> Self {
        GameEntity {
            x,
            y,
            velocity_x,
            velocity_y,
        }
    }

    /// 更新实体位置，根据当前速度增加坐标值
    #[napi]
    pub fn update_position(&mut self) {
        self.x += self.velocity_x;
        self.y += self.velocity_y;
        println!("Entity new position: ({}, {})", self.x, self.y);
    }

    /// 获取当前x坐标
    #[napi(getter)]
    pub fn get_x(&self) -> f64 {
        self.x
    }

    /// 获取当前y坐标
    #[napi(getter)]
    pub fn get_y(&self) -> f64 {
        self.y
    }
}

